package com.gitee.candy.other;

import java.io.File;
import java.io.IOException;

/**
 * @author ：suyanlong
 * @date ：Created in 2020/7/7 18:19
 * @description：获取项目路径工具类
 * @version: 1.0
 */
public class GetProjectPathUtils {

    /**
     * 得到工程的路径
     *
     * @return
     */
    public static String getProjectPath() {
        return System.getProperty("user.dir");
    }

    /**
     * 得到工程的路径
     * 尽量不要使用getProjectPath方法获取的路径，结果五花八门
     *
     * @return
     */
    public static String getSystemPath() {
        return ClassLoader.getSystemResource("").getPath();
    }

    /**
     * 获取标准的路径
     * 对于new File(".")和new File("..")
     * “."就表示当前的文件夹，而”..“则表示当前文件夹的上一级文件夹
     *
     * @param file
     * @return
     */
    public static String getCanonicalPath(File file) {
        try {
            return file.getCanonicalPath();
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * 获取绝对路径
     * 对于new File(".")和new File("..")
     * 不管”.”、“..”，返回当前的路径加上你在new File()时设定的路径
     *
     * @param file
     * @return
     */
    public static String getAbsolutePath(File file) {
        try {
            return file.getAbsolutePath();
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * 得到的只是你在new File()时设定的路径
     *
     * @param file
     * @return
     */
    public static String getPath(File file) {
        try {
            return file.getPath();
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * 类的绝对路径
     *
     * @return
     */
    public static String getClassPath() {
        try {
            return Class.class.getResource("/").getPath().substring(1);
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * 类的绝对路径
     *
     * @return
     */
    public static String getClassPath(Class clazz) {
        try {
            return clazz.getResource("").getPath();
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * 得到工程目录
     *
     * @return TODO
     */
//    public static String getRequestPath(HttpServletRequest request, String pacakgeName) {
//        try {
//            return request.getSession().getServletContext().getRealPath(pacakgeName);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return "";
//        }
//    }

    /**
     * 得到IE地址栏地址
     *
     * @return TODO
     */
//    public static String getRequestURL(HttpServletRequest request) {
//        try {
//            request.getServletPath();
//            return request.getRequestURL().toString();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return "";
//        }
//    }

    /**
     * 得到相对地址
     *
     * @return TODO
     */
//    public static String getRequestURI(HttpServletRequest request) {
//        try {
//            request.getServletPath();
//            return request.getRequestURI();
//        } catch (Exception e) {
//            e.printStackTrace();
//            return "";
//        }
//    }

    /**
     * System.getProperty()中的字符串参数值
     *
     *  java.version          Java 运行时环境版本
     * 	java.vendor         Java 运行时环境供应商
     * 	java.vendor.url         Java 供应商的 URL
     * 	java.vm.specification.version         Java 虚拟机规范版本
     * 	java.vm.specification.vendor         Java 虚拟机规范供应商
     * 	java.vm.specification.name         Java 虚拟机规范名称
     * 	java.vm.version         Java 虚拟机实现版本
     * 	java.vm.vendor         Java 虚拟机实现供应商
     * 	java.vm.name         Java 虚拟机实现名称
     * 	java.specification.version         Java 运行时环境规范版本
     * 	java.specification.vendor         Java 运行时环境规范供应商
     * 	java.specification.name         Java 运行时环境规范名称
     * 	os.name         操作系统的名称
     * 	os.arch         操作系统的架构
     * 	os.version         操作系统的版本
     * 	file.separator         文件分隔符（在 UNIX 系统中是“ / ”）
     * 	path.separator         路径分隔符（在 UNIX 系统中是“ : ”）
     * 	line.separator         行分隔符（在 UNIX 系统中是“ /n ”）
     *
     * 	java.home         Java 安装目录
     * 	java.class.version         Java 类格式版本号
     * 	java.class.path         Java 类路径
     * 	java.library.path          加载库时搜索的路径列表
     * 	java.io.tmpdir         默认的临时文件路径
     * 	java.compiler         要使用的 JIT 编译器的名称
     * 	java.ext.dirs         一个或多个扩展目录的路径
     * 	user.name         用户的账户名称
     * 	user.home         用户的主目录
     * 	user.dir
     * @return
     */
    public static void getPropertyValue() {
        System.out.println(System.getProperty("java.version "));
        System.out.println(System.getProperty("java.vendor  "));
        System.out.println(System.getProperty("java.vendor.url "));
        System.out.println(System.getProperty("java.home"));
        System.out.println(System.getProperty(" java.vm.specification.version"));
        System.out.println(System.getProperty("java.vm.specification.vendor "));
        System.out.println(System.getProperty("java.vm.specification.name"));
        System.out.println(System.getProperty("java.vm.version"));
        System.out.println(System.getProperty("java.vm.vendor"));
        System.out.println(System.getProperty("java.vm.name"));
        System.out.println(System.getProperty("java.specification.version"));
        System.out.println(System.getProperty("java.specification.vendor"));
        System.out.println(System.getProperty("java.specification.name"));
        System.out.println(System.getProperty("java.class.version"));
        System.out.println(System.getProperty("java.class.path"));
        System.out.println(System.getProperty("java.library.path"));
        System.out.println(System.getProperty("java.io.tmpdir"));
        System.out.println(System.getProperty("java.compiler "));
        System.out.println(System.getProperty("java.ext.dirs"));
        System.out.println(System.getProperty("os.name"));
        System.out.println(System.getProperty("os.arch"));
        System.out.println(System.getProperty("os.version"));
        System.out.println(System.getProperty("file.separator"));
        System.out.println(System.getProperty("path.separator"));
        System.out.println(System.getProperty("line.separator "));
        System.out.println(System.getProperty("user.name"));
        System.out.println(System.getProperty("user.home"));
        System.out.println(System.getProperty("user.dir"));
    }
}
